TOP

SQL INSERT INTO SELECT

INSERT INTO SELECT Description

L'instruction SQL INSERT INTO SELECT copie les données d'une table et les insère dans une autre table.

L'instruction INSERT INTO SELECT requiert que les types de données dans les tables source et cible correspondent.


Les enregistrements existants dans la table cible restent et ne sont pas affectés par le processus de copie.

INSERT INTO SELECT Syntaxe

Copie toutes les colonnes d'une table à une autre :

INSERT INTO table2
SELECT * 
FROM table1
WHERE condition

Copie uniquement certaines colonnes d'une table à une autre :

INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition

Base de données de démonstration

Dans ce tutoriel nous utiliserons la célèbre base de données exemple "Northwind".

Vous trouverez ci-dessous un exemple de la table "Customers" ("Clients") :

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.5021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.5023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

Et l'échantillon du tableau "Suppliers" ("Fournisseurs") :

SupplierIDSupplierNameContactNameAddressCityPostalCodeCountryPhone
1Exotic LiquidCharlotte Cooper49 Gilbert St.LondonaEC1 4SDUK(171) 555-2222
2New Orleans Cajun DelightsShelley BurkeP.O. Box 78934New Orleans70117USA(100) 555-4822
3Grandma Kelly's HomesteadRegina Murphy707 Oxford Rd.Ann Arbor48104USA(313) 555-5735
4Tokyo TradersYoshi Nagase9-8 Sekimai Musashino-shiTokyo100Japan(03) 3555-5011
5Cooperativa de Quesos 'Las Cabras'Antonio del Valle SaavedraCalle del Rosal 4Oviedo33007Spain(98) 598 76 54

INSERT INTO SELECT Exemples

La requête SQL suivante copie "Suppliers" ("Fournisseurs") vers "Customers" ("Clients") (les colonnes qui ne sont pas remplies de données contiendront NULL) :

INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country 
FROM Suppliers

Une autre version de la requête SQL copie les données de la table « Fournisseurs » vers « Clients » (remplit toutes les colonnes) :

INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
SELECT SupplierName, ContactName, Address, City, PostalCode, Country 
FROM Suppliers

L'instruction SQL suivante copie uniquement les fournisseurs allemands dans la table Customers :

INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country 
FROM Suppliers
WHERE Country = 'Germany'